package com.dq.Week2.day09.homework;

import java.util.Arrays;

/**
 * 解析url
 * 写一个方法，返回url中的所有参数的参数名
 * 例如，对于 url = "http://www.baidu.com/s?tn=json&word=onepiece&rn=10"
 * 返回： [tn, word, rn]
 */
public class HomeWork01 {

    public static void main(String[] args) {
        String url = "http://www.baidu.com/s?tn=json&word=onepiece&rn=10";
        //String regix1 = "\\?(\\w+)=(\\w+)&?(\\w+=\\w+)*";//提取一组参数
//        String regix2 = "\\?([^#]+)";//保留问号后面的所有内容
//        Pattern pattern = Pattern.compile(regix2);
//        Matcher matcher = pattern.matcher(url);


//        Pattern pattern = Pattern.compile(regix);
//        Matcher matcher = pattern.matcher(url);
//        String[] nameArr = parseParamNames(url,matcher);
        String[] nameArr = parseParamNames(url);
        System.out.println(Arrays.toString(nameArr));
    }

    public static String[] parseParamNames(String url) {
        //正则表达式
        //   \\?的意思是 第一个\是转义字符将第二个\显示出来 ？是匹配URL中的问号
        // (\\w+)：匹配一个或多个单词字符（字母、数字或下划线），并捕获为一个组，这代表参数名。
        // &?：匹配可能存在的&符号。
        //(\\w+=\\w+)*：匹配零个或多个由参数名和参数值组成的参数对，其中参数对之间用&分隔。

//        if(matcher.find())
//        {
//            String param1 = matcher.group(1);
//            String param2 = matcher.group(2);
//            String remainingParams = matcher.group(3);
//            System.out.println(remainingParams);
//            if (remainingParams != null && !remainingParams.isEmpty()) {
//                String[] params = remainingParams.split("&");
//                for (String param : params) {
//                    String[] keyValue = param.split("=");
//                    System.out.println("Param Name: " + keyValue[0]);
//                    System.out.println("Param Value: " + keyValue[1]);
//                }
//            }
//
//        }

//        if (matcher.find()) {
//            String paramsString = matcher.group(1); // 获取所有参数字符串
//            String[] paramPairs = paramsString.split("&"); // 根据&分割参数对
//
//            Map<String, String> params = new HashMap<>();
//
//            for (String paramPair : paramPairs) {
//                String[] keyValue = paramPair.split("=", 2); // 根据=分割键和值
//                if (keyValue.length == 2) {
//                    try {
//                        // 对值进行URL解码
//                        String decodedValue = java.net.URLDecoder.decode(keyValue[1], "UTF-8");
//                        params.put(keyValue[0], decodedValue);
//                    } catch (java.io.UnsupportedEncodingException e) {
//                        e.printStackTrace();
//                    }
//                }
//            }
//
//            // 输出解析后的参数
//            for (Map.Entry<String, String> entry : params.entrySet()) {
//                System.out.println("Param Name: " + entry.getKey());
//                System.out.println("Param Value: " + entry.getValue());
//            }
//
//            return null;
//        }
//        String[] stringStorage = new String[3];
//        int index=0;
//        if(matcher.find())
//        {
//            String s = matcher.group();
//            s = s.substring(1,s.length());
//            String[] s1 = s.split("&");//去掉&
//            for (int i = 0; i < s1.length; i++)//
//            {
//                String[] s2 = s1[i].split("=");//去掉=
//                for (int j = 0; j < s2.length; j++) {
//                    if((j+1)%2==1)//判断下标奇数位字符串
//                    {
//                        stringStorage[index++] = s2[j];
////                        if(index==stringStorage.length)
////                        {
////                            stringStorage = Arrays.copyOf(stringStorage,stringStorage.length*2);
////                        }
//
//                    }
//
//                }
//            }
//
//        }
//
//        return stringStorage;


        String s = url.split("\\?")[1];
        String[] arr = s.split("&");
        String[] arr2 = new String[arr.length];
        for (int i = 0; i < arr.length;i++) {
           arr2[i] = arr[i].split("=")[0];
        }
        return arr2;
    }
}